package com.sky.wsp.es.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.wsp.es.service.EsService;
import com.sky.wsp.es.vo.ProjectItemDto;
import com.sky.wsp.es.vo.ProjectItemEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * es搜索引擎
 */
@RestController
@RequestMapping("/es")
public class EsController {

    @Resource
    private EsService esService;

    /**
     * 新增或更新（id相同为更新）
     *
     * @param projectItemEntity 新增或修改的对象数据
     */
    @PostMapping("/update")
    public ResponseEntity<String> update(ProjectItemEntity projectItemEntity) {
        esService.update(projectItemEntity);
        return ResponseEntity.ok().build();
    }

    /**
     * 批量新增或更新（id相同为更新）
     *
     * @param projectItemEntities 新增或修改的对象数据
     */
    @PostMapping("/update-batch")
    public ResponseEntity<String> updateBatch(List<ProjectItemEntity> projectItemEntities) {
        esService.updateBatch(projectItemEntities);
        return ResponseEntity.ok().build();
    }

    /**
     * 通过主键删除
     *
     * @param ids 主键集合
     */
    @PostMapping("/delete")
    public ResponseEntity<String> delete(@RequestBody List<String> ids) {
        esService.delete(ids);
        return ResponseEntity.ok().build();
    }

    /**
     * 通过名称查询列表
     *
     * @param pageIndex 页面（首页从 0 开始）
     * @param pageSize  每页显示条数
     * @param itemKey   关键字
     */
    @GetMapping("/query-list")
    public IPage<ProjectItemEntity> queryList(@RequestParam(defaultValue = "1") Integer pageIndex,
                                              @RequestParam(defaultValue = "10") Integer pageSize,
                                              @RequestParam String itemKey) {
        IPage<ProjectItemEntity> list = esService.queryList(pageIndex, pageSize, itemKey);

        return list;
    }

    /**
     * 通过名称查询列表（高亮）
     *
     * @param pageIndex 页面（首页从 0 开始）
     * @param pageSize  每页显示条数
     * @param itemKey   关键字
     */
    @GetMapping("/query-highlight-list")
    public IPage<ProjectItemDto> queryHighlightList(@RequestParam(defaultValue = "1") Integer pageIndex,
                                                    @RequestParam(defaultValue = "10") Integer pageSize,
                                                    @RequestParam String itemKey) {
        IPage<ProjectItemDto> list = esService.queryHighlightList(pageIndex, pageSize, itemKey);

        return list;
    }

}
